package com.groupbuying.orderproducer.service;

import com.groupbuying.orderproducer.domain.OrderUshopDO;
import com.groupbuying.orderproducer.utils.apiresult.ApiResult;

import java.util.List;
import java.util.Map;

/**
 * 够样优店单订单表
 * 
 * @author zmlmagic
 * @email zmlmagic@163.com
 * @date 2019-05-05 01:59:51
 * @des
 */

public interface OrderUshopService {
	
	OrderUshopDO get(String orderId);
	
	List<OrderUshopDO> list(Map<String, Object> map);
	
	int count(Map<String, Object> map);
	
	int save(OrderUshopDO orderUshop);
	
	int update(OrderUshopDO orderUshop);
	
	int remove(String orderId);
	
	int batchRemove(String[] orderIds);

	/**
	 * 够样优店-创建订单
	 * */
	ApiResult createOrder(Map<String, Object> map);
	/**
	 * 优惠买单-创建订单
	 * */
	ApiResult createOrderForDiscounts(Map<String, Object> map);
	/**
	 * 通过订单号获取订单信息
	 * @param orderId 订单编号
	 * @return
	 */
	Map getOrder(String orderId);

	/**
	 * 通过订单号获取订单信息及优惠规则
	 * @param orderId 订单编号
	 * @return
	 */
	Map getOrderAndOpexRule(String orderId);
	/**
	 * 修改订单交易状态
	 * @param orderId 订单ID
	 * @param dealState 交易状态
	 * @return
	 */
	ApiResult updateDealState(String orderId,String dealState);
	/**
	 * 关闭订单
	 * @param orderId 订单ID
	 * @param closeType 操作类型 手动关闭 自动关闭
	 * @return
	 */
	ApiResult closeDealState(String orderId,String closeType);
	/**
	 * 修改订单状态
	 * @param orderId 订单id
	 * @param orderState  订单状态
	 * @return
	 */
	ApiResult updateOrderState(String orderId,String orderState);

	/**
	 * 根据id和时间查询订单
	 *
	 * @param
	 * @return
	 */
	ApiResult getDataByCustomer(Map<String,Object> map);

	/**
	 * 根据counterId查询订单
	 * @param
	 * @return
	 */
	ApiResult getOrderByCountId(Map<String,Object> map);

	/**
	 * 根据时间查询订单
	 * @param
	 * @return
	 */
	ApiResult getOrderByGmtTime(Map<String,Object> map);

	/**
	 * 查询当天订单
	 * @param map
	 * @return
	 */
	ApiResult getTodayOrder (Map <String, Object> map);

	/**
	 * 获取每日成功订单数
	 * @param map
	 * @return
	 */
	ApiResult countOrder(Map<String, Object> map);

	/**
	 * 获取订单金额
	 * @param map
	 * @return
	 */
	//ApiResult countOderMoney(Map<String,Object> map);
}
